package model

import "time"

// ExecResult 是执行 ddl和dml语句修改数据和schema的时候返回值
type ExecResult struct {
	// 返回的结果, 可能是 error
	Results []interface{} `json:"results"`
	// 查询用时
	Duration float64 `json:"time"`
	// 节点信息
	Raft RaftNode `json:"raft"`
}

// RaftNode 包含主节点和其他副本节点的相关信息
type RaftNode struct {
	// 节点编号
	Index int `json:"index"`
	// NodeId 节点id
	NodeID string `json:"node_id"`
}

// RqliteErrorResult 是执行返回的错误结果描述字符串
type RqliteErrorResult struct {
	// 错误描述
	Error string `json:"error"`
}

// QueryResult 是查询返回的结果
type QueryResult struct {
	Results []QueryData `json:"results"`
}

// QueryData 是查询返回的数据
type QueryData struct {
	// Columns 包含列的元数据
	Columns []string `json:"columns"`
	// Types 是类型信息
	Types []string `json:"types"`
	// Values 是返回的数据, 可能是二维数组
	Values []interface{} `json:"values"`
}

// User 是用户实体类
type User struct {
	ID       int    `json:"id"`
	UserName string `json:"username"`
	Password string `json:"password"`
}

// UserSession 用户登录缓存有效期
type UserSession struct {
	// Session id
	Sid string `json:"sid"`
	// 用户id
	UserID int `json:"userid"`
	// 用户名
	UserName string `json:"username"`
	// 创建时间
	CreateTime time.Time `json:"createtime"`
	// 有效时间, 默认是一天, 单位是秒
	ExpireTime int `json:"expiretime"`
}
